Method for processing a data signal, data processing unit and computer program product

ABSTRACT

A method for processing a data signal received via a communication channel is described, comprising determining a first matrix comprising components describing characteristics of the communication channel and inverting the first matrix by sub-dividing the first matrix into at least four sub matrices, inverting a first sub matrix of the four sub matrices generating a second matrix by multiplying a second sub matrix of the four sub matrices with the inverted first matrix and a third sub matrix of the four sub matrices, determining the difference matrix between the second matrix and a fourth sub matrix of the four sub matrices inverting the difference matrix and calculating the inverted matrix based on the inverted difference matrix. The data signal is processed using the inverted first matrix.

RELATED APPLICATIONS

The present application claims the benefit of U.S. provisional application 60/774,251, filed 16 Feb. 2006, the entire contents of which is incorporated herein by reference for all purposes.

SUMMARY

The invention relates to a method for processing a data signal, a data processing unit for processing a data signal and a computer program product.

Space time block coding (STBC) is a technique for transmitting data used in wireless communication systems where multiple copies of the same data stream are sent using a plurality of antennas. In a group space time block coding (GSTBC) system, there are groups of antennas wherein each group of antennas transmits one data stream and the antennas of one group transmit the same data stream. At the expense of using more transmit antennas a performance improvement in terms of packet error rate (PER) may be achieved compared to multiple input multiple output (MIMO) systems where also a plurality of data streams are transmitted in parallel but one data stream is only transmitted using a single antenna.

For example, a GSTBC system with a two dimensional (2D) interleaver outperforms the OFDM system according to IEEE 802.11a when the SNR (signal to noise ratio) is greater than 26 dB even with a data rate that is 3 times higher.

However, the complexity of a receiver for a GSTBC system is significantly larger as compared to a conventional single antenna system even when linear detectors are employed.

An object of the invention is to provide an improved method for detecting data signals received via a communication channel.

The object is achieved by a method for processing a data signal, a data processing unit for processing a data signal and a computer program product with the features according to the independent claims.

A method for processing a data signal received via a communication channel is provided, comprising

-   -   determining a first matrix comprising components describing         characteristics of the communication channel     -   inverting the first matrix by         -   sub-dividing the first matrix into at least four sub             matrices         -   inverting a first sub matrix of the four sub matrices         -   generating a second matrix by multiplying a second sub             matrix of the four sub matrices with the inverted first             matrix and a third sub matrix of the four sub matrices         -   determining the difference matrix between the second matrix             and a fourth sub matrix of the four sub matrices         -   inverting the difference matrix         -   calculating the inverted matrix based on the inverted             difference matrix     -   processing the data signal using the inverted first matrix.

Further, a data processing unit for processing a data signal and a computer program product according to the method for processing a data signal described above are provided.

Illustratively, for generating a matrix for processing the received data signal, for example for generating a filter matrix, the first matrix characterizing the communication channel, for example a channel matrix comprising components characterizing the transmission characteristics of the communication channel, is inverted using a matrix inversion approach that allows to reduce the number of multiplications necessary for matrix inversion and signal processing compared with conventional methods.

The data processing unit is for example used in a receiver, for example the receiver of a 6×3 (6 transmit antennas, 3 receiver antennas) MIMO (multiple input multiple output) WLAN (wireless local area network) system. The data signal may for example be transmitted and received via a communication system according to WLAN 11a, WLAN 11g, WLAN 11n, Super 3G, HIPERLAN 2, WIMAX (Worldwide Interoperability for Microwave Access) and B3G (beyond 3G) or other communication systems.

Embodiments of the invention emerge from the dependent claims. The embodiments which are described in the context of the method for processing a data signal are analogously valid for the data processing unit for processing a data signal and the computer program product.

In one embodiment of the invention, the first matrix is inverted according to Strassen's method for matrix inversion.

The communication channel is for example a radio communication channel. The received data signal is for example processed for estimating a sent data signal that was received as the received data signal. In one embodiment, the sent data signal is transmitted using a plurality of transmit antennas. For example, the sent data signal is transmitted according to Groupwise Space Time Block Code. The sent data signal may be transmitted using OFDM modulation.

In one embodiment, at least one of the four sub matrices has Alamouti structure. For example, the first matrix consists of sub matrices having Alamouti structure. A sub matrix having Alamouti structure can be easily inverted and allows a further decrease of complexity compared to a direct approach for matrix inversion for example by solving a linear equation system.

In one embodiment, the inverted matrix is used for performing a filter operation on the received data signal. The received data signal is for example linearly filtered using the inverted matrix. The received data signal may be filtered according to a zero forcing interference suppression method, a linear minimum mean squared error detection method or an interference cancellation method.

The first matrix is for example generated from a channel matrix modelling the transmission characteristics of the communication channel. The first matrix may for example be sub matrix of the channel matrix or the first matrix may be the channel matrix itself. The first matrix may also be a product of matrices with one factor being the channel matrix or the hermitian of the channel matrix.

BRIEF DESCRIPTION OF THE DRAWINGS

Illustrative embodiments of the invention are explained below with reference to the drawings.

FIG. 1 shows a communication system according to an embodiment of the invention.

FIG. 2 shows a processor element according to an embodiment of the invention.

FIG. 3 shows a flow diagram according to an embodiment of the invention.

DETAILED DESCRIPTION

FIG. 1 shows a communication system 100 according to an embodiment of the invention. The communication system 100 comprises a transmitter 101 and a receiver 102.

The transmitter 101 is a GSTBC (Groupwise space time block coding) transmitter comprising a plurality of STBC transmitter groups 103, 104, 105, in this example a first STBC transmitter group 103, a second STBC transmitter group 104 and a third STBC transmitter group 105. The number of STBC transmitter groups 103, 104, 105 is denoted by L_(g). In this example L_(g)=3.

The transmitter 101 comprises a plurality of transmit antennas 106. The number of transmit antennas 106 is denoted by L_(t). In this embodiment, each STBC transmitter group uses L_(t)/L_(g) transmit antennas 106. It is not necessary that each STBC transmitter groups uses the same number of transmit antennas. In other embodiments, the STBC transmitter groups use different numbers of transmit antennas.

The first STBC transmitter group 103 receives as input a first data stream 107, generates STBC codewords from the first data stream 107 and sends the STBC codewords using OFDM (orthogonal frequency division multiplexing) and using L_(t)/L_(g) transmit antennas 106. Each antenna used by the first STBC transmitter group 103 sends the same signal.

The second STBC transmitter group 104 receives as input a second data stream 108, generates STBC codewords from the second data stream 108 and sends the STBC codewords using OFDM (orthogonal frequency division multiplexing) and using L_(t)/L_(g) transmit antennas 106. Each antenna used by the second STBC transmitter group 104 sends the same signal.

The third STBC transmitter group 105 receives as input a third data stream 109, generates STBC codewords from the third data stream 109 and sends the STBC codewords using OFDM (orthogonal frequency division multiplexing) and using L_(t)/L_(g) transmit antennas 106. Each antenna used by the third STBC transmitter group 105 sends the same signal.

In this way, the first data stream 107, the second data stream 108 and the third data stream 109 are sent in parallel. Altogether, the STBC transmitter groups 103, 104, 105 send data 110 being separated into the data streams 107, 108, 109. For example, each data stream 107, 108, 109 corresponds to a different user that wants to transmit the respective data stream 107, 108, 109.

In one embodiment, the transmitter 101 comprises one or more coded modulation units for encoding the data 110 such that the data streams 107, 108, 109 are, for example convolutionally encoded, bit-interleaved, and modulated to MQAM (M-order quadrature amplitude modulation) signals. The data streams 107, 108, 109 may be bit streams, e.g. to be transmitted using BPSK (binary phase-shift keying) or streams of symbols, e.g. to be transmitted using QPSK (quadrature phase-shift keying) or QAM (quadrature amplitude modulation).

The receiver 102 comprises receive antennas 111. The number of receive antennas 111 is denoted by L_(r). In one embodiment L_(r)≧L_(g). In the following, it is assumed that L_(r)=L_(g) such that the minimum number of receive antennas 111, in this example 3, is used. This is for example of advantage if the receiver 102 should be kept small, for example when the receiver 102 is integrated in a mobile device, such as a cell phone.

The signals received by the receive antennas 111 are fed into a filter unit 112 which generates filtered bit streams that are respectively fed into a first OFDM decoder 113, a second OFDM decoder 114 and a third OFDM decoder 115. The first OFDM decoder 113 generates a first received bit stream 116, The second OFDM decoder 114 generates a second received bit stream 117 and the third OFDM decoder 115 generates a third received bit stream 118.

In the embodiment described in the following, an Alamouti's code is used. Therefore, L_(t)/L_(g)=2 and full rate transmission is achieved. More antennas can be employed to allow further diversity and higher system performance. The embodiment described in the following can be extended to such cases.

A STBC transmitter group 103, 104, 105 forms data vectors form the respective data stream 107, 108, 109. A data vector formed by one STBC transmitter group 103, 104, 105 from the respective bit streams 107, 108, 109 is denoted by

${\underset{\_}{x}}_{g} = \begin{bmatrix} X_{g}^{0} \\ {- X_{g}^{1^{*}}} \end{bmatrix}$ where g=1, . . . , L_(g) is the number of the respective STBC transmitter group 103, 104, 105. When x _(g) has been transmitted (in one transmission step), as will be explained in the following, the STBC transmitter group 103, 104, 105 forms the next data vector.

The data vectors data vectors x _(g) can be written together in the form of the vector

$\underset{\_}{x} = \begin{bmatrix} {\underset{\_}{x}}_{1} \\ \vdots \\ {\underset{\_}{x}}_{L_{g}} \end{bmatrix}$ which corresponds to the data transmitted in one transmission step by the STBC transmitter groups 103, 104, 105.

The data received by the receiver 102 in one transmission step, i.e. when the vector x is transmitted, is written as

$\underset{\_}{r} = {{\begin{bmatrix} {\underset{\_}{r}}_{1} \\ \vdots \\ {\underset{\_}{r}}_{L_{g}} \end{bmatrix}\mspace{14mu}{where}\mspace{14mu}{\underset{\_}{r}}_{r}} = {\begin{bmatrix} R_{r}^{0} \\ {- R_{r}^{1^{*}}} \end{bmatrix}.}}$

The relation between the sent data vector x and the received data vector r can be modelled as r=Hx+n   (1) where n models independent average white Gaussian noise (AWGN) with zero mean and with variance σ_(n) ². The matrix H is called channel matrix and is defined by

$\begin{matrix} {{\underset{\_}{H} = \begin{bmatrix} {\underset{\_}{H}}_{11} & \ldots & {\underset{\_}{H}}_{1,L_{g}} \\ \vdots & \ddots & \vdots \\ {\underset{\_}{H}}_{L_{g,1}} & \ldots & {\underset{\_}{H}}_{L_{g},L_{g}} \end{bmatrix}},{{\underset{\_}{H}}_{g\; r} = \begin{bmatrix} {\underset{\_}{H}}_{g\; r}^{0} & {\underset{\_}{H}}_{g\; r}^{1} \\ {- {\underset{\_}{H}}_{g\; r}^{1^{*}}} & {\underset{\_}{H}}_{g\; r}^{0^{*}} \end{bmatrix}}} & (2) \end{matrix}$ where H _(gr) ^(t) (t=0, 1 for the two antennas of each STBC transmitter group 103, 104, 105) models the transmission characteristics of the (frequency domain) channel between the t^(th) antenna 106 of the g^(th) STBC transmitter group 103, 104, 105 and the r^(th) receive antenna 111.

The sub matrices H _(gr) of matrix H are called channel sub matrices. They have a special structure given by

$\begin{matrix} \begin{bmatrix} h_{0} & h_{1} \\ {- h_{1}^{*}} & h_{0}^{*} \end{bmatrix} & (3) \end{matrix}$ where h₀, h₁ are complex numbers. A matrix having such a structure is called Alamouti matrix in the following. For an Alamouti matrix H, a vector h can be defined according to the following correspondence:

$\begin{matrix} {\underset{\_}{H} = {\left. \begin{bmatrix} h_{0} & h_{1} \\ {- h_{1}^{*}} & h_{0}^{*} \end{bmatrix}\leftrightarrow h \right. = \begin{bmatrix} h_{0} \\ h_{1} \end{bmatrix}}} & (4) \end{matrix}$

The vector h holds the same information as the matrix H and is introduced for notational convenience. It allows the orthogonality of the matrix H to be written as H ^(H) H=H H ^(H) =∥h∥ ² I   (5) where ∥h∥ denotes the norm of the vector h and I is the identity matrix of the appropriate dimension (2×2 in this case).

The result of adding and multiplying Alamouti matrices as well as of taking the inverse of an Alamouti matrix is still an Alamouti matrix. This means that the set of all Alamouti matrices is closed under addition, multiplication and inversion. This can be seen when these operations are written down explicitly. If A and B are Alamouti matrices,

$\begin{matrix} {{{\underset{\_}{A} + \underset{\_}{B}} = {{\begin{bmatrix} a & b \\ {- b^{*}} & a^{*} \end{bmatrix} + \begin{bmatrix} c & d \\ {- d^{*}} & c^{*} \end{bmatrix}} = \begin{bmatrix} {a + c} & {b + d} \\ {- \left( {b + d} \right)^{*}} & \left( {a + c} \right)^{*} \end{bmatrix}}}\begin{matrix} {{\underset{\_}{A} \times \underset{\_}{B}} = {\begin{bmatrix} a & b \\ {- b^{*}} & a^{*} \end{bmatrix} \times \begin{bmatrix} c & d \\ {- d^{*}} & c^{*} \end{bmatrix}}} \\ {= \begin{bmatrix} {{a\; c} - {bd}^{*}} & {{ad} + {bc}^{*}} \\ {- \left( {{ad} + {bc}^{*}} \right)^{*}} & \left( {{a\; c} - {bd}^{*}} \right)^{*} \end{bmatrix}} \end{matrix}{\underset{\_}{A} = {\begin{bmatrix} a & b \\ {- b^{*}} & c^{*} \end{bmatrix}^{- 1} = {{\frac{1}{{a}^{2}}\begin{bmatrix} a^{*} & {- b} \\ b^{*} & a \end{bmatrix}}.}}}} & (6) \end{matrix}$

This allows to simplify the detection process.

In one embodiment, the filter unit 112 carries out a general zero forcing interference suppression (ZFIS) algorithm. This is a linear filter algorithm applied to the received data vector

$\underset{\_}{r} = \begin{bmatrix} {\underset{\_}{r}}_{1} \\ \vdots \\ {\underset{\_}{r}}_{L_{g}} \end{bmatrix}$ such that for a STBC transmitter group 103, 104, 105, the interference from the other STBC transmitter groups 103, 104, 105 in the received signal is suppressed.

The linear filter used is given by the matrix

$\begin{matrix} {\underset{\_}{G} = \begin{bmatrix} {\underset{\_}{G}}_{11} & \ldots & {\underset{\_}{G}}_{1\; L_{g}} \\ \vdots & \ddots & \vdots \\ {\underset{\_}{G}}_{L_{g}1} & \ldots & {\underset{\_}{G}}_{L_{g}L_{g}} \end{bmatrix}} & (7) \end{matrix}$ where each sub matrix G _(ij) has to be determined based on the transmission characteristics. Filtering the received data vector r using the matrix G gives the filtered received data vector

$\overset{\sim}{\underset{\_}{r}} = \begin{bmatrix} {\overset{\sim}{\underset{\_}{r}}}_{1} \\ \vdots \\ {\overset{\sim}{\underset{\_}{r}}}_{L_{g}} \end{bmatrix}$ according to {tilde over (r)}=G r=G H x+G n={tilde over (H)} x+ñ   (8) where ñ=G n. The matrix G is chosen such that

$\begin{matrix} {\overset{\sim}{\underset{\_}{H}} = {\underset{\_}{GH} = \begin{bmatrix} {\overset{\sim}{\underset{\_}{H}}}_{1} & 0 & \ldots & 0 \\ 0 & {\overset{\sim}{\underset{\_}{H}}}_{2} & \ldots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \ldots & {\overset{\sim}{\underset{\_}{H}}}_{Lg} \end{bmatrix}}} & (9) \end{matrix}$ such that in the filtered received data vector {tilde over (r)}, there is no interference between the data sent by different STBC transmitter groups 103, 104, 105. It can be seen from (9) that after filtering according to (8) the data transmitted by a STBC transmitter group 103, 104, 105 can be processed independently of the data transmitted by the other STBC transmitter groups 103, 104, 105 since all interference from the other STBC transmitter groups 103, 104, 105 has been removed. The channel model for the g^(th) STBC transmitter group 103, 104, 105 can then be written as {tilde over (r)} _(g) ={tilde over (H)} _(g) x _(g) +{tilde over (n)} _(g)  (10) where Σ_(k) G _(gk) H _(kg)={tilde over (H)}_(g) and the noise component {tilde over (n)}_(g) is bi-variate complex Gaussian distributed with zero mean and correlation matrix

${\sigma_{n}^{2}\left( {\sum\limits_{k}\;{{\underset{\_}{g}}_{gk}}^{2}} \right)}{\underset{\_}{I}.}$

The generality of this formulation results in some flexibility in implementation. The matrix G has L_(g)×2×2 degrees of freedom which are not all used for fulfilling (9). Therefore, in one embodiment a first constraint (denoted by constraint A) is used and in another embodiment, a second constraint (denoted by constraint B) is used such that the matrix G is uniquely defined by equation (9) and the respective constraint. These two embodiments are equivalent in the sense that the same results are given for coded and uncoded systems. The different choice of the constraint for matrix G allows different hardware architectures to be used which may be more appropriate for different scenarios.

Constraint A is given by G _(ii)=I where i=1, . . . , L_(g). When G _(ii)=I, the sub matrices G _(ij) with i≠j (i=1, . . . , L_(g)) can be uniquely determined using (9).

Constraint B is given by {tilde over (H)}_(i)=I where i=1, . . . , L_(g). When {tilde over (H)}_(i)=I, the sub matrices G _(ij) with i≠j (i=1, . . . , L_(g)) can be uniquely determined using (9). In this case, G=H ⁻¹.

In an uncoded system, based on (10), for unbiased estimation, the data transmitted by the g^(th) STBC transmitter group 103, 104, 105 is estimated by x _(g,ZF) ={tilde over (J)} _(g) ⁻¹ {tilde over (r)}=x _(g) +{tilde over (H)} _(g) ^(H) {tilde over (n)} _(g) /∥{tilde over (h)} _(g)∥².  (11)

A slicer is used to determine the corresponding transmitted symbols based on this estimation. As will be explained below, the estimation x _(g,ZF) is also used for computing the metric for soft decoding a forward error control (FEC) code as well.

Instead of using two filter steps in the linear filter 112, namely the filter steps according to (8) and (11), the linear filter 112 may also generate x _(g,ZF) in one filter step which is a combination of these two filter steps according to

$\begin{matrix} {{\overset{\sim}{\underset{\_}{x}}}_{ZF} = {\begin{bmatrix} {\overset{\sim}{\underset{\_}{x}}}_{1} \\ {\overset{\sim}{\underset{\_}{x}}}_{2} \\ \vdots \\ {\overset{\sim}{\underset{\_}{x}}}_{L_{g}} \end{bmatrix} = {{\begin{bmatrix} {\overset{\sim}{\underset{\_}{H}}}_{1}^{- 1} & 0 & \ldots & 0 \\ 0 & \ddots & \ddots & \vdots \\ \vdots & \ddots & \ddots & 0 \\ 0 & \ldots & 0 & {\overset{\sim}{\underset{\_}{H}}}_{L_{g}}^{- 1} \end{bmatrix}\overset{\sim}{\underset{\_}{r}}} = {{\underset{\_}{G}}^{\prime}\underset{\_}{r}}}}} & (12) \end{matrix}$ where

$\begin{matrix} {{\underset{\_}{G}}^{\prime} = {\begin{bmatrix} {{\overset{\sim}{\underset{\_}{H}}}_{1}^{- 1}{\underset{\_}{G}}_{11}} & \ldots & {{\overset{\sim}{\underset{\_}{H}}}_{1}^{- 1}{\underset{\_}{G}}_{1\; L_{g}}} \\ \vdots & \ddots & \vdots \\ {{\overset{\sim}{\underset{\_}{H}}}_{L_{g}}^{- 1}{\underset{\_}{G}}_{L_{g}1}} & \ldots & {{\overset{\sim}{\underset{\_}{H}}}_{L_{g}}^{- 1}{\underset{\_}{G}}_{L_{g}L_{g}}} \end{bmatrix}.}} & (13) \end{matrix}$

In a FEC-coded system, for example when the bit streams 107, 108, 109 are convolutionally encoded, the data received from each STBC transmitter groups 103, 104, 105 can be processed independently based on (10). Since the noise variance of {tilde over (n)}_(g) is

$\frac{1}{\sigma_{n}^{2}\left( {\sum\limits_{k}\;{g_{gk}}^{2}} \right)},$ the optimal metric used for soft decoding is given as

$\begin{matrix} {{\frac{1}{\sigma_{n}^{2}\left( {\sum\limits_{k}\;{{\underset{\_}{g}}_{gk}}^{2}} \right)}{{{\overset{\sim}{\underset{\_}{r}}}_{g} - {{\overset{\sim}{\underset{\_}{H}}}_{g}x_{g}}}}^{2}} = {\frac{{{\overset{\sim}{\underset{\_}{h}}}_{g}}^{2}}{\sigma_{n}^{2}\left( {\sum\limits_{k}\;{{\underset{\_}{g}}_{gk}}^{2}} \right)}{{{{\underset{\_}{x}}_{g,{ZF}} - {\underset{\_}{x}}_{g}}}^{2}.}}} & (14) \end{matrix}$

The second form of metric calculation, i.e. the right hand side of (14), is more desirable since ∥x _(g,ZF)−x _(g)∥² can be computed easily element by element for a fixed constellation of a transmitted symbol. Therefore, in one embodiment, this form is used for metric calculation.

In this case x _(g,ZF) and the channel normalization factor defined as

$\begin{matrix} {\rho_{g} = \frac{{{\overset{\sim}{\underset{\_}{h}}}_{g}}^{2}}{\sigma_{n}^{2}\left( {\sum\limits_{k}\;{{\underset{\_}{g}}_{gk}}^{2}} \right)}} & (15) \end{matrix}$ is explicitly calculated.

The remaining required operations according to (14) can be carried out by standard computation and the results can be passed as soft input to a Viterbi decoder.

The detection according to (11) (denoted by ZFIS Option 1) and (12) (denoted by ZFIS Option 2) are based on constraint A. When the detection is based on constraint B, and G is calculated as the inverse of H (denoted by ZFIS Option 3), a matrix inversion of H is required. In this case, the complexity can be reduced if the matrix H is inverted efficiently.

In the specific case L_(r)=L_(g)=3, the channel matrix H is a 6×6 matrix which consists of nine Alamouti matrices. Additions can be carried out much faster than multiplications and, in view of a hardware implementation, less silicon area or chip space is required to implement additions than multiplications. Therefore, when considering complexity only the number of multiplications and divisions is taken into account. It is differentiated between the number of real operations and complex operations. In terms of complexity and necessary hardware, each complex multiplication can be expressed as a multiple of a real multiplication, usually a multiple to 3 or 4.

The ZFIS algorithms introduced above require matrix additions, matrix multiplications and matrix inversions. Since Alamouti matrices are closed under addition and multiplication, when these operations are carried out for two Alamouti matrices, only the first row of the resulting matrix needs to be calculated. The second row can be obtained by sign change and/or conjugate operations. Therefore, for a multiplication of two 2×2 Alamouti matrices, only 4 complex multiplications are required.

From (6), it can be seen that a matrix inversion of a 2×2 Alamouti matrix can be done by scaling and reordering of matrix elements. If

${\underset{\_}{a} = \begin{bmatrix} a \\ b \end{bmatrix}},$ the norm of a is given by ∥a∥ ² =a _(R) ² +a _(I) ² +b _(R) ² +b _(I) ²  (16) where the subscript R denotes the real part of the respective complex number and I denotes the imaginary part of the respective complex number. ∥a∥² can therefore be computed using 4 real multiplications. Taking the reciprocal of ∥a∥² requires 1 real division. For multiplying

$\frac{1}{{\underset{\_}{a}}^{2}}$ with the real parts and imaginary parts of the first row of the matrix

$\begin{matrix} {\begin{bmatrix} a^{*} & {- b} \\ b^{*} & a \end{bmatrix}\quad} & \; \end{matrix}$ to get the first row of the inverse matrix (the second row can be, as mentioned above, be calculated without further multiplications) 4 real multiplications are additionally needed. For a multiplication of a matrix A with the identity matrix, no operations are required since A I=I A=A.

The channel matrix H is estimated in a channel training phase. Subsequently, the receiver 101 receives the data vector r which is filtered to reconstruct the sent data vector x.

In one embodiment, the detection method is divided into two stages, a pre-computation stage (before the r has been received or is processed) and a filtering stage (when the vector r is processed).

In the pre-computation stage, ρ_(g) is calculated according to (15) and all computations are carried out that allow the calculation of x _(g,ZF) according to (11) or (12) respectively as soon as the vector r is available. Specifically, in the pre-computation stage, (after the channel has been estimated and the matrix H has been generated), the following steps are carried out:

(a) The matrix G and

$\sum\limits_{k}\;{g_{gk}}^{2}$ are calculated (b) The matrices {tilde over (H)}_(g) and {tilde over (H)}_(g) ⁻¹ and ∥{tilde over (h)}_(g)∥² are calculated (c) The matrix G′ is calculated (this requires G and {tilde over (H)}_(g) ⁻¹ and is only done when ZFIS Option 2 is used) (d) ρ_(g) is calculated according to (15)

ZFIS Option 1 requires less pre-computation than ZFIS Option 1 but uses a two-step filter instead of a one-step filter.

In the filtering stage in case of ZFIS Option 1, the following step is carried out

(a1) {tilde over (r)}=G r and x _(g,ZF)={tilde over (H)}_(g) ⁻¹{tilde over (r)}_(g) are calculated.

In the filtering stage in case of ZFIS Option 2, the following step is carried out

(a2) x _(ZF)=G′r is calculated.

In the example with L_(r)=L_(g)=3, the ZFIS filter matrix G has the form

$\begin{matrix} {\underset{\_}{G} = {\begin{bmatrix} {\underset{\_}{G}}_{11} & {\underset{\_}{G}}_{12} & {\underset{\_}{G}}_{13} \\ {\underset{\_}{G}}_{21} & {\underset{\_}{G}}_{22} & {\underset{\_}{G}}_{23} \\ {\underset{\_}{G}}_{31} & {\underset{\_}{G}}_{32} & {\underset{\_}{G}}_{33} \end{bmatrix}.}} & (17) \end{matrix}$ where G _(gg)=I (g=1, 2, 3) and the other 2×2 square sub matrices are calculated according to (9) by

$\begin{matrix} {{{\underset{\_}{G}}_{12} = {\left\lbrack {{{\underset{\_}{H}}_{13}{\underset{\_}{H}}_{33}^{- 1}} - {{\underset{\_}{H}}_{12}{\underset{\_}{H}}_{32}^{- 1}}} \right\rbrack\;\left\lbrack {{{\underset{\_}{H}}_{22}{\underset{\_}{H}}_{32}^{- 1}} - {{\underset{\_}{H}}_{23}{\underset{\_}{H}}_{33}^{- 1}}} \right\rbrack}^{- 1}}{{\underset{\_}{G}}_{13} = {\left\lbrack {{{\underset{\_}{H}}_{13}{\underset{\_}{H}}_{23}^{- 1}} - {{\underset{\_}{H}}_{12}{\underset{\_}{H}}_{22}^{- 1}}} \right\rbrack\;\left\lbrack {{{\underset{\_}{H}}_{32}{\underset{\_}{H}}_{22}^{- 1}} - {{\underset{\_}{H}}_{33}{\underset{\_}{H}}_{23}^{- 1}}} \right\rbrack}^{- 1}}{{\underset{\_}{G}}_{21} = {\left\lbrack {{{\underset{\_}{H}}_{23}{\underset{\_}{H}}_{33}^{- 1}} - {{\underset{\_}{H}}_{21}{\underset{\_}{H}}_{31}^{- 1}}} \right\rbrack\;\left\lbrack {{{\underset{\_}{H}}_{11}{\underset{\_}{H}}_{31}^{- 1}} - {{\underset{\_}{H}}_{13}{\underset{\_}{H}}_{33}^{- 1}}} \right\rbrack}^{- 1}}{{\underset{\_}{G}}_{23} = {\left\lbrack {{{\underset{\_}{H}}_{23}{\underset{\_}{H}}_{13}^{- 1}} - {{\underset{\_}{H}}_{21}{\underset{\_}{H}}_{11}^{- 1}}} \right\rbrack\;\left\lbrack {{{\underset{\_}{H}}_{31}{\underset{\_}{H}}_{11}^{- 1}} - {{\underset{\_}{H}}_{33}{\underset{\_}{H}}_{13}^{- 1}}} \right\rbrack}^{- 1}}{{\underset{\_}{G}}_{31} = {\left\lbrack {{{\underset{\_}{H}}_{32}{\underset{\_}{H}}_{22}^{- 1}} - {{\underset{\_}{H}}_{31}{\underset{\_}{H}}_{21}^{- 1}}} \right\rbrack\;\left\lbrack {{{\underset{\_}{H}}_{11}{\underset{\_}{H}}_{21}^{- 1}} - {{\underset{\_}{H}}_{12}{\underset{\_}{H}}_{22}^{- 1}}} \right\rbrack}^{- 1}}{{\underset{\_}{G}}_{32} = {\left\lbrack {{{\underset{\_}{H}}_{32}{\underset{\_}{H}}_{12}^{- 1}} - {{\underset{\_}{H}}_{31}{\underset{\_}{H}}_{11}^{- 1}}} \right\rbrack\;\left\lbrack {{{\underset{\_}{H}}_{21}{\underset{\_}{H}}_{11}^{- 1}} - {{\underset{\_}{H}}_{22}{\underset{\_}{H}}_{12}^{- 1}}} \right\rbrack}^{- 1}}} & (18) \end{matrix}$

The terms for G _(ij) (i≠j according to (18)) consist of two factors (enclosed in square factors). They are denoted by left side factor and right side factor according to the order in which they are written in (18). Since G _(gg)=I (g=1, 2, 3) the matrices G _(gg) do not need to be calculated.

The right side factors of all G _(ij) can be calculated first using the matrices given in the second column of table 1. The left side factors can be calculated subsequently using the matrices in the second column and the third column.

TABLE 1 Group (value of Computation for right and Computation for index i) left side factor left side factor 1 H ₂₃ H ₃₃ ^(H), H ₃₂ H ₂₂ ^(H) H ₁₃ H ₂₃ ^(H) 2 H ₁₃ H ₃₃ ^(H), H ₃₁ H ₁₁ ^(H) H ₂₁ H ₃₁ ^(H) 3 H ₁₂ H ₂₂ ^(H), H ₂₁ H ₁₁ ^(H) H ₃₂ H ₁₂ ^(H)

The required complexity (for 9 H _(i) H _(j) ^(H) terms) is:

9×4=36 complex multiplications for H _(i) H _(j) ^(H)

9×4=36 real multiplications for ∥h _(i)∥²

For example, the sub matrix G ₁₂ is calculated according to

$\begin{matrix} \begin{matrix} {{\underset{\_}{G}}_{12} = {\left\lbrack {{{\underset{\_}{H}}_{13}{\underset{\_}{H}}_{33}^{- 1}} - {{\underset{\_}{H}}_{12}{\underset{\_}{H}}_{32}^{- 1}}} \right\rbrack\;\left\lbrack {{{\underset{\_}{H}}_{22}{\underset{\_}{H}}_{32}^{- 1}} - {{\underset{\_}{H}}_{23}{\underset{\_}{H}}_{33}^{- 1}}} \right\rbrack}^{- 1}} \\ {= {\left\lbrack {{\frac{1}{{{\underset{\_}{h}}_{33}}^{2}}{\underset{\_}{H}}_{13}{\underset{\_}{H}}_{33}^{H}} - {\frac{1}{{{\underset{\_}{h}}_{32}}^{2}}{\underset{\_}{H}}_{12}{\underset{\_}{H}}_{32}^{H}}} \right\rbrack \times {\underset{\_}{C}}^{H} \times}} \\ {\frac{{{\underset{\_}{h}}_{33}}^{2}{{\underset{\_}{h}}_{32}}^{2}}{{\underset{\_}{c}}^{2}}} \\ {= {\left\lbrack {{{{\underset{\_}{h}}_{32}}^{2}{\underset{\_}{H}}_{13}{\underset{\_}{H}}_{33}^{H}} - {{{\underset{\_}{h}}_{33}}^{2}{\underset{\_}{H}}_{12}{\underset{\_}{H}}_{32}^{H}}} \right\rbrack \times {\underset{\_}{C}}^{H} \times \frac{1}{{\underset{\_}{c}}^{2}}}} \end{matrix} & (19) \end{matrix}$ where C=∥h ₃₃∥₂ H ₂₂ H ₃₂ ^(H) −∥h ₃₂∥² H ₂₃ H ₃₃  (20)

The required (for 6 Gij terms where i≠j) complexity is:

6×4×4=96 real multiplications for the real scalar-multiplications written in square brackets in (19)

6×4=24 real multiplications for ∥c∥²

6×1 real divisions for reciprocal of ∥c∥²

6×4=24 complex multiplications for the matrix multiplications

6×4=24 real multiplications for real scalar-matrix normalization

For the calculation of

$\sum\limits_{k}\;{g_{gk}}^{2}$ in step (a) in the case L_(r)=L_(g)=3, i.e. for the calculation of 6 ∥g_(gk)∥² terms with g≠k (since ∥g_(gg)∥²=1) 6×4=24 real multiplications are required.

These terms are combined according to

$\begin{matrix} {{{\sum\limits_{k}\;{{\underset{\_}{g}}_{1\; k}}^{2}} = {1 + {{\underset{\_}{g}}_{12}}^{2} + {{\underset{\_}{g}}_{13}}^{2}}}{{\sum\limits_{k}\;{{\underset{\_}{g}}_{2\; k}}^{2}} = {{{\underset{\_}{g}}_{21}}^{2} + 1 + {{\underset{\_}{g}}_{23}}^{2}}}{{\sum\limits_{k}\;{{\underset{\_}{g}}_{3\; k}}^{2}} = {{{\underset{\_}{g}}_{31}}^{2} + {{\underset{\_}{g}}_{32}}^{2} + 1}}} & (21) \end{matrix}$

In stage (b),

$\begin{matrix} {{\overset{\sim}{\underset{\_}{H}}}_{g} = {\sum\limits_{k}\;{{\underset{\_}{G}}_{gk}{\underset{\_}{H}}_{kg}}}} & (22) \end{matrix}$ is calculated. For example, when L_(r)=L_(g)=3 {tilde over (H)} ₁ =H ₁₁ +G ₁₂ H ₂₁ +G ₁₃ H ₃₁ {tilde over (H)} ₂ =G ₂₁ H ₁₂ +H ₂₂ +G ₂₃ H ₃₂ {tilde over (H)} ₃ =G ₃₁ H ₁₃ +G ₃₂ H ₂₃ +H ₃₃  (23)

This requires 3×2×4=24 complex multiplications (for the three {tilde over (H)}_(g) terms.

Further, in step (b), the matrix {tilde over (H)}_(g) ⁻¹ and the value ∥{tilde over (h)}_(g)∥² need to be calculated. For L_(r)=L_(g)=3, this requires

3×4=12 real multiplications for 3 ∥{tilde over (h)}_(g)∥² terms

3×1=3 real divisions for the reciprocals of ∥{tilde over (h)}_(g)∥²

3×4=12 real multiplications for 3 scalar-matrix multiplications.

In step (c), G′ is calculated, in case L_(r)=L_(g)=3 this is

$\begin{matrix} \begin{matrix} {{\underset{\_}{G}}^{\prime} = {\begin{bmatrix} {\overset{\sim}{\underset{\_}{H}}}_{1}^{- 1} & 0 & 0 \\ 0 & {\overset{\sim}{\underset{\_}{H}}}_{2}^{- 1} & 0 \\ 0 & 0 & {\overset{\sim}{\underset{\_}{H}}}_{3}^{- 1} \end{bmatrix}\begin{bmatrix} \underset{\_}{I} & {\underset{\_}{G}}_{12} & {\underset{\_}{G}}_{13} \\ {\underset{\_}{G}}_{21} & \underset{\_}{I} & {\underset{\_}{G}}_{23} \\ {\underset{\_}{G}}_{31} & {\underset{\_}{G}}_{32} & \underset{\_}{I} \end{bmatrix}}} \\ {= \begin{bmatrix} {\overset{\sim}{\underset{\_}{H}}}_{1}^{- 1} & {{\overset{\sim}{\underset{\_}{H}}}_{1}^{- 1}{\underset{\_}{G}}_{12}} & {{\overset{\sim}{\underset{\_}{H}}}_{1}^{- 1}{\underset{\_}{G}}_{13}} \\ {{\overset{\sim}{\underset{\_}{H}}}_{2}^{- 1}{\underset{\_}{G}}_{21}} & {\overset{\sim}{\underset{\_}{H}}}_{2}^{- 1} & {{\overset{\sim}{\underset{\_}{H}}}_{2}^{- 1}{\underset{\_}{G}}_{23}} \\ {{\overset{\sim}{\underset{\_}{H}}}_{3}^{- 1}{\underset{\_}{G}}_{31}} & {{\overset{\sim}{\underset{\_}{H}}}_{3}^{- 1}{\underset{\_}{G}}_{32}} & {\overset{\sim}{\underset{\_}{H}}}_{3}^{- 1} \end{bmatrix}} \end{matrix} & (24) \end{matrix}$

This requires 6×4=24 complex multiplications.

As mentioned above, this is not done in ZFIS Option 1.

In step (d) (15) is calculated. This requires 3 real multiplications if L_(r)=L_(g)=3.

In the filtering step according to ZFIS Option 1, 3×8+18=42 complex multiplications are required for {tilde over (r)}=G r and x _(g,ZF)={tilde over (H)}_(g) ⁻¹{tilde over (r)}_(g) if L_(r)=L_(g)=3. Since G _(gg)=I, {tilde over (r)}=G r may be simplified.

In the filtering step according to ZFIS Option 2, 6×6=36 complex multiplications are required for x _(ZF)=G′r if L_(r)=L_(g)=3.

The complexity of ZFIS Options 1 and 2 are summarized in tables 2 and 3 for L_(r)=L_(g)=3.

TABLE 2 term multiplications divisions ∥h _(j)∥², H _(i) H _(j) ^(H)  36 complex,  36 real — G _(ij) (i ≠ j)  24 complex, 144 real  6 ∥g _(gk)∥²  24 real — ${\overset{\sim}{\underset{\_}{H}}}_{g} = {\sum\limits_{k}\;{{\underset{\_}{G}}_{gk}{\underset{\_}{H}}_{kg}}}$  24 complex — {tilde over (H)} _(g) ⁻¹, ∥{tilde over (h)} _(g)∥²  24 real  3 G′  24 complex — $\frac{{{\overset{\sim}{\underset{\_}{h}}}_{g}}^{2}}{\sum\limits_{k}\;{{\underset{\_}{g}}_{gk}}^{2}}$ —  3 x _(ZF) = G′r  36 complex — total 144 complex, 228 real 23

TABLE 3 term multiplications divisions ∥h _(j)∥², H _(i) H _(j) ^(H)  36 complex,  36 real — G _(ij) (i ≠ j)  24 complex, 144 real  6 ∥g _(gk)∥²  24 real — ${\overset{\sim}{\underset{\_}{H}}}_{g} = {\sum\limits_{k}\;{{\underset{\_}{G}}_{gk}{\underset{\_}{H}}_{kg}}}$  24 complex — {tilde over (H)} _(g) ⁻¹, ∥{tilde over (h)} _(g)∥²  24 real  3 $\frac{{{\overset{\sim}{\underset{\_}{h}}}_{g}}^{2}}{\sum\limits_{k}\;{{\underset{\_}{g}}_{gk}}^{2}}$ —  3 {tilde over (r)} = Gr  24 complex — x _(ZF,g) = {tilde over (H)} _(g) ⁻¹ {tilde over (r)}  18 complex — total 126 complex, 228 real 12

In one embodiment where ZFIS Option 3 is used, the inversion of the matrix H is carried out according to a fast matrix multiplication approach discovered by Strassen in 1969 (see [1]) which uses a divide and conquer approach.

For inverting a matrix H having the structure

$\begin{matrix} {\underset{\_}{H} = {\begin{bmatrix} a_{11} & a_{12} \\ a_{21} & a_{22} \end{bmatrix} = \begin{bmatrix} c_{11} & c_{12} \\ c_{21} & c_{22} \end{bmatrix}^{- 1}}} & (25) \end{matrix}$ where a_(ij) and c_(ij) can be scalars or sub matrices of appropriate dimensions, the following computations are carried out: R ₁=(a ₁₁)⁻¹ R ₂ =a ₂₁ ×R ₁ R ₃ =R ₁ ×a ₁₂ R ₄ =a ₂₁ ×R ₃ R ₅ =R ₄ −a ₂₂ R ₆=(R ₅)⁻¹ c ₁₂ =R ₃ ×R ₆ c ₂₁ =R ₆ ×R ₂ R ₇ =R ₃ ×c ₂₁ c ₁₁ =R ₁ −R ₇ c ₂₂ =−R ₆  (26)

This can be done for a matrix of any dimension having the structure according to (25). However, the above operations have to be carried out serially.

For example, in the case L_(r)=L_(g)=3, the channel matrix H is a 6×6 matrix consisting of 9 sub matrices H _(ij) (i, j=1, 2, 3) which may be divided such that into the structure (25) according to

$\begin{matrix} {\underset{\_}{H} = {\begin{bmatrix} {\underset{\_}{H}}_{11} & {\underset{\_}{H}}_{12} & {\underset{\_}{H}}_{13} \\ {\underset{\_}{H}}_{21} & {\underset{\_}{H}}_{22} & {\underset{\_}{H}}_{23} \\ {\underset{\_}{H}}_{31} & {\underset{\_}{H}}_{32} & {\underset{\_}{H}}_{33} \end{bmatrix} = \begin{bmatrix} \left\lbrack {\underset{\_}{H}}_{11} \right\rbrack & \left\lbrack \begin{matrix} {\underset{\_}{H}}_{12} & \left. {\underset{\_}{H}}_{13} \right\rbrack \end{matrix} \right. \\ \begin{bmatrix} {\underset{\_}{H}}_{21} \\ {\underset{\_}{H}}_{31} \end{bmatrix} & \begin{bmatrix} {\underset{\_}{H}}_{22} & {\underset{\_}{H}}_{23} \\ {\underset{\_}{H}}_{32} & {\underset{\_}{H}}_{33} \end{bmatrix} \end{bmatrix}}} & (27) \end{matrix}$

For higher numbers of L_(r) and L_(g), H can be partitioned in such a way that the lower-right submatrix of H, a₂₂, in this example

$\begin{bmatrix} {\underset{\_}{H}}_{22} & {\underset{\_}{H}}_{23} \\ {\underset{\_}{H}}_{32} & {\underset{\_}{H}}_{33} \end{bmatrix},$ has the largest possible dimension (being a power of 2) such that the STBC matrix H ₁₁ is not partitioned.

If needed for higher numbers of L_(r) and L_(g), the partitioning can be done recursively such that there is one sub-matrix (e.g. a ₂₂) with the largest possible dimension (being a power of 2) making sure that the STBC matrix H ₁₁ is not partitioned. This sub-matrix can then be partitioned itself and inverted according to the inverting scheme above.

In the example L_(r)=L_(g)=3, another partitioning is possible, for example by forming a 2×2 sub matrix in the upper left of H. It can be seen that when equations (26) are applied to this partitioning of H, the matrices generated by the equations and multiplied according to the equations (26) have the correct dimensions such that no impossible multiplication has to be carried out in terms of matrix dimensions (a 4×4 matrix with a 2×2 matrix for example.) The inversion of the lower right 4×4 matrix

${\underset{\_}{c}}_{22} = \begin{bmatrix} {\underset{\_}{H}}_{22} & {\underset{\_}{H}}_{23} \\ {\underset{\_}{H}}_{32} & {\underset{\_}{H}}_{33} \end{bmatrix}$ may also be done according to the equations (26). Since the H _(ij) (i, j=1, 2, 3) have Alamouti structure (and these are closed under multiplication, addition and inversion), only the first rows of the matrices need to be computed. Further, simplifications for calculation of inverse matrices of 2×2 matrices and calculation of determinants of 2×2 matrices can be used.

With G=H ⁻¹, the filtered channel matrix {tilde over (H)} is an identity matrix. In this case, ∥{tilde over (h)}_(g)∥₂ needs not to be computed.

The complexity of ZFIS Option 3 is summarized in table 4 for L_(r)=L_(g)=3. It involves all the necessary computations to generating the estimate x _(ZF,g) (g=1, 2, 3) and the channel normalization factor according to (14) for the decoder (for example Viterbi decoder).

TABLE 4 term multiplications divisions H ⁻¹  96 complex, 24 real 3 ∥g _(gk)∥² 36 real — ∥{tilde over (h)} _(g)∥²  0 real — $\frac{{{\overset{\sim}{\underset{\_}{h}}}_{g}}^{2}}{\sum\limits_{k}\;{{\underset{\_}{g}}_{gk}}^{2}}$ — 3 x _(ZF,g) = {tilde over (H)} _(g) ⁻¹ {tilde over (r)} _(g)  36 complex — total 132 complex, 60 real 6

The ZFIS algorithm is a generalization of the zero-forcing (ZF) detector. A minimum mean squared error (MMSE) detector can also be used by the filter unit 112. In this case, the filter matrix is given by

$\begin{matrix} {{\underset{\_}{G}}_{MMSE} = {\left\lbrack {{{\underset{\_}{H}}^{H}\underset{\_}{H}} + {\sigma_{n}^{2}\underset{\_}{I}}} \right\rbrack^{- 1}{\underset{\_}{H}}^{H}}} & (28) \end{matrix}$

As in the case G=H⁻¹, the inverse of a matrix needs to be calculated. Since

$\left\lbrack {{{\underset{\_}{H}}^{H}\underset{\_}{H}} + {\sigma_{n}^{2}\underset{\_}{I}}} \right\rbrack$ also consists of Alamouti sub matrices, the method explained above for low-complexity matrix inversion can be used as well.

In the following, an example is given for the inversion of a 6×6 matrix comprising 2×2 matrices with Alamouti structure. The matrix to be inverted is given by

$\begin{matrix} {\begin{bmatrix} a_{11} & b_{11} & a_{12} & b_{12} & a_{13} & b_{13} \\ {- b_{11}^{*}} & a_{11}^{*} & {- b_{12}^{*}} & a_{12}^{*} & {- b_{13}^{*}} & a_{13}^{*} \\ a_{21} & b_{21} & a_{22} & b_{22} & a_{23} & b_{23} \\ {- b_{21}^{*}} & a_{21}^{*} & {- b_{22}^{*}} & a_{22}^{*} & {- b_{23}^{*}} & a_{23}^{*} \\ a_{31} & b_{31} & a_{32} & b_{32} & a_{33} & b_{33} \\ {- b_{31}^{*}} & a_{31}^{*} & {- b_{32}^{*}} & a_{32}^{*} & {- b_{33}^{*}} & a_{33}^{*} \end{bmatrix} \equiv \begin{bmatrix} {\underset{\_}{m}}_{11} & {\underset{\_}{m}}_{12} & {\underset{\_}{m}}_{13} \\ {\underset{\_}{m}}_{21} & {\underset{\_}{m}}_{22} & {\underset{\_}{m}}_{23} \\ {\underset{\_}{m}}_{31} & {\underset{\_}{m}}_{32} & {\underset{\_}{m}}_{33} \end{bmatrix}} & (29) \end{matrix}$

The objective is to compute

$\begin{matrix} {\underset{\_}{G} = {\begin{bmatrix} {\underset{\_}{g}}_{11} & {\underset{\_}{g}}_{12} & {\underset{\_}{g}}_{13} \\ {\underset{\_}{g}}_{21} & {\underset{\_}{g}}_{22} & {\underset{\_}{g}}_{23} \\ {\underset{\_}{g}}_{31} & {\underset{\_}{g}}_{32} & {\underset{\_}{g}}_{33} \end{bmatrix} = \begin{bmatrix} {\underset{\_}{m}}_{11} & {\underset{\_}{m}}_{12} & {\underset{\_}{m}}_{13} \\ {\underset{\_}{m}}_{21} & {\underset{\_}{m}}_{22} & {\underset{\_}{m}}_{23} \\ {\underset{\_}{m}}_{31} & {\underset{\_}{m}}_{32} & {\underset{\_}{m}}_{33} \end{bmatrix}^{- 1}}} & (30) \end{matrix}$

Given two matrices

${\underset{\_}{S}}_{1} = {{\frac{1}{k_{1}}\begin{bmatrix} a_{1} & b_{1} \\ {- b_{1}^{*}} & a_{1}^{*} \end{bmatrix}}\mspace{14mu}{and}}$ ${\underset{\_}{S}}_{2} = {\frac{1}{k_{2}}\begin{bmatrix} a_{2} & b_{2} \\ {- b_{2}^{*}} & a_{2}^{*} \end{bmatrix}}$ represented as S ₁={a₁, b₁, k₁} and S ₂={a₂, b₂, k₂}, the following rules are used: S ₁ +S ₂ ≡{k ₂ a ₁ +k ₁ a ₂ ,k ₂ b ₁ +k ₁ b ₂ ,k ₁ k ₂ } S ₁ −S ₂ ≡{k ₂ a ₁ −k ₁ a ₂ ,k ₂ b ₁ −k ₁ b ₂ ,k ₁ k ₂ } S ₁

S ₂ ≡{a ₁ a ₂ −b ₁ b ₂ *,a ₁ b ₂ +b ₁ a ₂ *,k ₁ k ₂ } S ₁ ⁻¹ ≡{k ₁ a ₁ *,−k ₁ b ₁ ,|a ₁|² +|b ₁|²} − S ₁ ≡{−a ₁ ,−b ₁ ,k ₁}  (31)

The solution to the 6×6 matrix inversion is obtained by first performing matrix inversion on the 4×4 matrix

$\begin{matrix} {\begin{bmatrix} {\underset{\_}{m}}_{11} & {\underset{\_}{m}}_{12} \\ {\underset{\_}{m}}_{21} & {\underset{\_}{m}}_{22} \end{bmatrix}^{- 1} = \begin{bmatrix} {\underset{\_}{c}}_{11} & {\underset{\_}{c}}_{12} \\ {\underset{\_}{c}}_{21} & {\underset{\_}{c}}_{22} \end{bmatrix}} & (32) \end{matrix}$ corresponding to (26) according to the equations: R=m ₁₁ ⁻¹ R ₂ =m ₂₁

R ₁ R ₃ =R ₁

m ₁₂ R ₄ =m ₂₁

R ₃ R ₅ =R ₄ −m ₂₂ R ₆ =R ₅ ⁻¹ c ₁₂ =R ₃

R ₆ c ₂₁ =R ₆

R ₂ R ₇ =R ₃

c ₂₁ c ₁₁ =R ₁ −R ₇ c ₂₂ =−R ₆  (33)

Equations (26) are then iteratively used a second time such that the final solution is calculated according to Q _(2,11a) =m ₃₁

c ₁₁ Q _(2,11b) =m ₃₂

c ₂₁ Q _(2,11) =Q _(2,11a) +Q _(2,11b) Q _(2,12a) =m ₃₁

c ₁₂ Q _(2,12b) =m ₃₂

c ₂₂ Q _(2,12) =Q _(2,12a) +Q _(2,12b) Q _(3,11a) =c ₁₁

m ₁₃ Q _(3,11b) =c ₁₂

m ₂₃ Q _(3,11) =Q _(3,11a) +Q _(3,11b) Q _(3,21a) =c ₂₁

m ₁₃ Q _(3,21b) =c ₂₂

m ₂₃ Q _(3,21) =Q _(3,21a) +Q _(3,21b) Q _(4a) =m ₃₁

Q _(3,11) Q _(4b) =m ₃₂

Q _(3,21) Q ₄ =Q _(4a) +Q _(4b) Q ₅ =Q ₄ −m ₃₃ Q ₆ =Q ₅ ⁻¹ g ₁₃ =Q _(3,11)

Q ₆ g ₂₃ =Q _(3,21)

Q ₆ g ₃₁ =Q ₆

Q _(2,11) g ₃₂ =Q ₆

Q _(2,12) Q _(7,11) =Q _(3,11)

g ₃₁ Q _(7,12) =Q _(3,11)

g ₃₂ Q _(7,21) =Q _(3,21)

g ₃₁ Q _(7,22) =Q _(3,21)

g ₃₂ g ₁₁ =c ₁₁ −Q _(7,11) g ₁₂ =c ₁₂ −Q _(7,12) g ₂₁ =c ₂₁ −Q _(7,21) g ₂₂ =c ₂₂ −Q _(7,22) g ₃₃ =−Q ₆  (34)

Divisions are only required when the matrices are recovered to their final form from the notation {a₁, b₁, k₁} to

${\frac{1}{k_{1}}\begin{bmatrix} a_{1} & b_{1} \\ {- b_{1}^{*}} & a_{1}^{*} \end{bmatrix}}.$ All operations above are operations on 2×2 matrices.

The reciprocal computation can be done using the Newton Raphson method. This is based on the method to obtain a zero of a function f (the value of x for which f(x)=0). A guess for a zero x[j], i.e. an approximation of a zero of the function, is iteratively enhanced by x[j+1]=x[j]−f(x[j])/f′(x[j])  (35) where f′(x[j]) is evaluated at x[j].

This can be applied to the function f(R)=1/R−k which has a zero at 1/k for computing the inverse of the value k. The iterative formula is in this case given by R[j+1]=R[j](2−R[j]k)  (36) where R[0] is an initial guess, i.e. the initial approximation. The iterative formula can be re-written as R[j+1]=R[j]+R[j]−(R[j]k)R[j]  (37) for computation using a RISC-like architecture. Quadratic convergence can be achieved, the better the initial guess, the faster the convergence. Multiple initial guesses can be used for different ranges of the value of k.

Since only one division at the end of the procedure is necessary, hardware implementation is facilitated. This also enlarges the range of the values that appear in course of the procedure. Numeric simulations show that bit widths of some intermediate result may exceed more than 20 bits. Therefore, in one embodiment, intermediate data is dynamically scaled.

In the following, a possible hardware architecture for carrying out the inversion process described above is described with reference to FIG. 2.

FIG. 2 shows a processor element 200 according to an embodiment of the invention.

The processor element 200 comprises a dual-port memory 201 for storing the input and output, two hardware multipliers 202 for multiplying two words, two adding/subtracting units 203 for adding/subtracting, a dynamic scale unit comprising a first scale unit 204, a second scale unit 205 and a scale function unit 206, pipeline registers to store intermediate results, a plurality of multiplexers 208 to direct the data flow and initial guess selection units 209.

Since the memory 201 is a dual-port memory, data stored at the same address can be simultaneously accessed at two output ports. Therefore, operations on the same two complex numbers (multiplication, addition, subtraction) are possible as well as operations on one complex number (squaring, determination of absolute value). The memory is for example operated at 80 MHz, wherein the read cycles and write cycles are alternated (and thus are each clocked at 40 MHz).

The multiplexers denoted by RMUX0, IMUX0, RMUX1, IMUX1 in FIG. 2 route the real parts and imaginary parts of complex numbers stored in the memory 201 to the multipliers 202. They can be controlled such that each combination (i.e. real part of first complex number x real part of second complex number, real part of first complex number x imaginary part of second complex number, imaginary part of first complex number x imaginary part of second complex number, imaginary part of first complex number x real part of second complex number) can be multiplied using the multipliers 201. Therefore, when two complex numbers need to be multiplied, only the two multipliers 201 and two clock cycles are necessary to perform the required four multiplications.

The inversion method based on the Newton Raphson method as explained above is used for reciprocal calculation. When the first iteration is to be initiated, the signal denoted by INIT in FIG. 2 is set to 1. In the subsequent iterations the signal INIT is set to 0 since the result of the previous iteration is used as guess for the next iteration.

Since there are two independent multipliers 201, the reciprocal of two numbers can simultaneously calculated using the iterative Newton Raphson method. This allows an efficient use of hardware resources.

The processing element 200 is for example used for each sub carrier of an OFDM system, for example, in case of 48 sub carriers as it is commonly used, 48 processing elements 200 are used in parallel. The processing element has a RISC-like architecture and is optimized for the 5 basic matrix operations and reciprocal calculation. It can be implemented with high speed (e.g. in ASIC) for a low latency or for allowing processing of more than one sub carrier by the same processing element 200. The scaling decreases the risk of numerical underflow or overflow during the processing.

In the following, a processing flow for detection according to one embodiment of the invention is described.

FIG. 3 shows a flow diagram 300 according to an embodiment of the invention.

In step 301, a first matrix comprising components describing characteristics of the communication channel is determined. This may be the channel matrix H itself or another matrix, for example the matrix

$\left\lbrack {{{\underset{\_}{H}}^{H}\underset{\_}{H}} + {\sigma_{n}^{2}\underset{\_}{I}}} \right\rbrack^{- 1}$ for use in an MMSE filter.

The first matrix is inverted by the following steps. In step 302, the first matrix is sub-divided into at least four sub matrices. For example, the matrix is written according to equation (25).

In step 303, a first sub matrix of the four sub matrices is inverted. In the example using the formulas (26), the first sub matrix would be a₁₁ which is inverted to get R1.

In step 304, a second matrix (R4 in the example using (26)) is generated by multiplying a second sub matrix (a₁₂ in the example using of (26)) of the four sub matrices with the inverted first matrix and a third sub matrix of the four sub matrices (a₁₂ in the example using (26)).

In step 305, the difference matrix (R5 in the example using (26)) between the second matrix and a fourth sub matrix (a₂₂ in the example using (26)) of the four sub matrices is determined.

In step 306, the difference matrix is inverted (the result would be R6 in the example using (26)).

In step 307, the inverted matrix is calculated based on the inverted difference matrix and the data signal is processed using the inverted first matrix. The inverted first matrix is for example used as a part of a filter matrix or a filter matrix is generated from the inverted first matrix for filtering the received data signal.

In this document, the following publication is cited:

-   V. Strassen, “Gaussian Elimination is not Optimal,” Numerische     Mathematik, vol 13, pp. 354-356, 1969 

The invention claimed is:
 1. Method for processing a data signal received via a communication channel, comprising: determining a first matrix comprising components describing characteristics of the communication channel; inverting the first matrix by: sub-dividing the first matrix into at least four sub matrices, inverting a first sub matrix of the four sub matrices, generating a second matrix by multiplying a second sub matrix of the four sub matrices with the inverted first matrix and a third sub matrix of the four sub matrices, determining the difference matrix between the second matrix and a fourth sub matrix of the four sub matrices, inverting the difference matrix, calculating the inverted matrix based on the inverted difference matrix; and processing the data signal using the inverted first matrix.
 2. Method according to claim 1, wherein the first matrix is inverted according to Strassen's method for matrix inversion.
 3. Method according to claim 1, wherein the communication channel is a radio communication channel.
 4. Method according to claim 1, wherein the received data signal is processed for estimating a sent data signal that was received as the received data signal.
 5. Method according to claim 4, wherein the sent data signal is transmitted using a plurality of transmit antennas.
 6. Method according to claim 5, wherein the sent data signal is transmitted according to Groupwise Space Time Block Coding.
 7. Method according to claim 4, wherein the sent data signal is transmitted using OFDM modulation.
 8. Method according to claim 1, wherein at least one of the four sub matrices has Alamouti structure.
 9. Method according to claim 8, wherein the first matrix consists of sub matrices having Alamouti structure.
 10. Method according to claim 1, wherein the inverted matrix is used for performing a filter operation on the received data signal.
 11. Method according to claim 10, wherein the received data signal is linearly filtered using the inverted matrix.
 12. Method according to claim 11, wherein the received data signal is filtered according to a zero forcing interference suppression method, a linear mean squared error detection method or an interference cancellation method.
 13. Method according to claim 1, wherein the first matrix is generated from a channel matrix modelling the transmission characteristics of the communication channel.
 14. Method according to claim 13, wherein the first matrix is a sub matrix of the channel matrix.
 15. Method according to claim 13, wherein the first matrix is the channel matrix.
 16. Method according to claim 13, wherein the first matrix is a product of matrices, one factor being the channel matrix or the hermitian of the channel matrix.
 17. Data processing unit for processing a data signal received via a communication channel, comprising a determining unit configured to determine a first matrix comprising components describing characteristics of the communication channel; comprising an inverting unit configured to invert the first matrix by: sub-dividing the first matrix into at least four sub matrices, inverting a first sub matrix of the four sub matrices, generating a second matrix by multiplying a second sub matrix of the four sub matrices with the inverted first matrix and a third sub matrix of the four sub matrices, determining the difference matrix between the second matrix and a fourth sub matrix of the four sub matrices, inverting the difference matrix, calculating the inverted matrix based on the inverted difference matrix; wherein the data processing unit is configured to process the data signal using the inverted first matrix.
 18. A computer program product, which, when executed by a computer, makes the computer perform a method for processing a data signal received via a communication channel, comprising: determining a first matrix comprising components describing characteristics of the communication channel; inverting the first matrix by: sub-dividing the first matrix into at least four sub matrices, inverting a first sub matrix of the four sub matrices, generating a second matrix by multiplying a second sub matrix of the four sub matrices with the inverted first matrix and a third sub matrix of the four sub matrices, determining the difference matrix between the second matrix and a fourth sub matrix of the four sub matrices, inverting the difference matrix, calculating the inverted matrix based on the inverted difference matrix; and processing the data signal using the inverted first matrix. 